package ar.com.larreta.colegio.entidades;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import ar.com.larreta.entidades.Entidad;

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name="producto")
//Borrado logico
@SQLDelete (sql="UPDATE Producto SET fechaEliminacion=CURRENT_TIMESTAMP WHERE ID=?")
//Solamente trae los que no fueron borrados logicamente
@Where(clause="fechaEliminacion IS NULL")
public class Producto extends Entidad {
	private Long id;
	private String nombre;
	private Double valor;
	private Double pagado;
	
	@Transient
	public Double getPagado() {
		return pagado;
	}

	public void setPagado(Double pagado) {
		this.pagado = pagado;
	}

	@Transient
	public Double getAdeudado() {
		if (pagado!=null){
			return valor - pagado;
		}
		return valor;
	}

	public void setAdeudado(Double adeudado) {}
	
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	public Long getId() {
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	
	@Basic @Column (name="nombre")
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	@Basic @Column (name="valor")
	public Double getValor() {
		return valor;
	}
	
	public void setValor(Double valor) {
		this.valor = valor;
	}
}
